﻿using System.Collections.Generic;
using MaxStoreShop.Domain.Directories;

namespace MaxStoreShop.Logic.ServicesContracts.Directories
{
    /// <summary>
    /// Сервис для работы с пользователями
    /// </summary>
    public interface IUserService
    {
        /// <summary>
        /// Получает список пользователей системы из хранилища исключая удаленных
        /// </summary>
        /// <returns>Возвращает список пользователей системы</returns>
        IEnumerable<StoreUser> GetUsers();

        /// <summary>
        /// Производит авторизацию пользователя в системе
        /// </summary>
        /// <param name="user">Пользователь для авторизации</param>
        /// <param name="password">Пароль пользователя</param>
        void AuthorizeUser(StoreUser user, string password);

        /// <summary>
        /// Производит удаление пользователя из хранилища
        /// </summary>
        /// <param name="user">Пользователь, которого необходимо удалить</param>
        void DeleteUser(StoreUser user);

        /// <summary>
        /// Создает нового или обновляет существующего пользователя в хранилище
        /// </summary>
        /// <param name="user">Пользователь для сохранения</param>
        void SaveUser(StoreUser user);
    }

}
